﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using SoftHotel.Models;
using System.Data.Entity;

namespace SoftHotel.Controllers
{
    public class DocVentasController : Controller
    {
        static ClienteDAO clienteDAO = new ClienteDAO();
        static ReservaHabDAO reservaDAO = new ReservaHabDAO();
        static ConsumoDocVentaDAO consumoDAO = new ConsumoDocVentaDAO();
        
        //MONO como te dije utiliza solo el reservaDAO - Yani
        //static DetalleReservaHabDAO detalleReservDAO = new DetalleReservaHabDAO();
        
        //static List<Cliente> listaCliente = new List<Cliente>(); //????
        //static List<ReservaHab> listaReserva = new List<ReservaHab>();
        private ParametroDAO parametroDAO = new ParametroDAO();

        public ActionResult Index()
        {
            ViewBag.tipoDoc = new SelectList(parametroDAO.parametros.Where(a => a.tipo == "TIPO_DOCUMENTO_ID"), "idParametro", "valor");
            return View();
        }

        [HttpPost]
        public ActionResult Index(Cliente cliente, string button)
        {

            if (button == "Buscar")
            {
                return RedirectToAction("Search", "DocVentas", cliente);
            }

            return View();
        }

        public ActionResult Search(Cliente cliente)
        {
            var listaReservas = reservaDAO.reservas.Where(a => a.estado == 1); //me manda todas las reservas activas
            listaReservas = listaReservas.Include(a => a.cliente);
            listaReservas = listaReservas.Include(a=> a.cliente.objeTipoDoc);

//            var listaCliente = clienteDAO.clientes.Where(a => a.idCliente > 0);

//            listaCliente = listaCliente.Include(a => a.objeTipoDoc);
            
            if (cliente.tipoDoc != null)
            {
                listaReservas = listaReservas.Where(a => a.cliente.tipoDoc == cliente.tipoDoc);
            }
            if (cliente.numDoc != null)
            {
                listaReservas = listaReservas.Where(a => a.cliente.numDoc == cliente.numDoc);
            }
            if (cliente.nombres != null)
            {
                listaReservas = listaReservas.Where(a => a.cliente.nombres == cliente.nombres);
            }
            if (cliente.apellidoPaterno != null)
            {
                listaReservas = listaReservas.Where(a => a.cliente.apellidoPaterno == cliente.apellidoPaterno);
            }

            return View(listaReservas);
        }

        //
        // POST: /Ambientes/Create

        [HttpPost]
        public ActionResult Search( string button)
        {
            if (button == "Regresar")
            {
                return RedirectToAction("Index");
            }
            return View();
          
        }

        public ActionResult Detalle(int idReserva)
        {
            var detalleReserva = reservaDAO.detalles.Where(a => a.idReserva == idReserva);
            var detalleConsumo = consumoDAO.consumo.Where(a=>a.idReserva == idReserva); //cambio
            var detalleCompleto = new DetalleReserva();

            detalleReserva = detalleReserva.Include(a => a.ambiente); //la vale
            detalleReserva = detalleReserva.Include(a => a.ambiente.pTipoAmbiente);
            detalleConsumo = detalleConsumo.Include(a=>a.servicio);

            detalleCompleto.detalleReservaHab = new List<DetalleReservaHab>();
            detalleCompleto.detalleConsumo = new List<ConsumoDocVenta>(); //cambio
            
         

            detalleCompleto.detalleReservaHab = detalleReserva.ToList();
            detalleCompleto.detalleConsumo = detalleConsumo.ToList();
           
            return View(detalleCompleto);
        }

        //
        // POST: /Ambientes/Create

        [HttpPost]
        public ActionResult Detalle(DetalleReserva detalleCompleto, string button)
        {
            if (!ModelState.IsValid)
                return View();

            if (button == "Aceptar")
            {
                return RedirectToAction("Generar", detalleCompleto);
            }

            if (button == "Regresar")
            {
                return RedirectToAction("Index");
            }

            return View();

        }


        public ActionResult Generar(DetalleReserva detalleCompleto)
        {
            /*if (detalleCompleto.detalleConsumo.First().checkBox)
                ViewBag.hola = "hola";
             */
            //Necesito:'idResevar' que lo saco de detalleCompleto
            //         campos : 'nombre', 'tipoDocId', 'numDocId' a HttpPost

            ViewBag.tipoDocId = new SelectList(parametroDAO.parametros.Where(a => a.tipo == "TIPO_DOCUMENTO_ID"), "idParametro", "valor");
            string fecha = String.Format("{0:d/MM/yyyy}", DateTime.Now);
            ViewBag.fecha = fecha;

            //Jalar datos de Sede
            //Mandar 
            //Jalar y mostrar detallesReserva que seleccione previamente
            //
            //Mandar tipoDocVenta al submitear

            return View();
        }

        
        [HttpPost]
        public ActionResult Generar(DocVenta docVenta,string button)
        {
            //Necesito:'idResevar' que lo saco de detalleCompleto
            //         campos : 'nombre', 'tipoDocId', 'numDocId', 'tipoDocVta' recibidos x HttpPost
            //          'fecha' del dia de hoy
            docVenta.fechaEmision = DateTime.Now;
            docVenta.moneda = 74;//Por ahora
            if (button == "Generar Boleta"){
                docVenta.tipoDocVenta = parametroDAO.parametros.Where(a=>a.valor=="Boleta").First().idParametro;
            }

            if (button == "Generar Factura")
            {
                docVenta.tipoDocVenta = parametroDAO.parametros.Where(a => a.valor == "Factura").First().idParametro;
            }
            //registrar el DocVenta
            //Registrar modos de pago

            return View();

        }


    }
}
